﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DTO;
using BUS;
using DevComponents.DotNetBar;
using CrystalDecisions.CrystalReports.Engine;

namespace GUI
{
    public partial class frmMain : DevComponents.DotNetBar.Metro.MetroAppForm
    {
        public static Image img;
        public static int matb;
        public static int maltb;
        public static string info;

        public frmMain()
        {
            InitializeComponent();
            if (dgvDanhSachThietBi.Rows.Count > 1)
            {
                btnThanhToan.Enabled = false;
                this.btnInHoaDon.Enabled = false;
            }
        }

        private string _tenUser = frmDangNhap.Ten;
        private int _maUser = frmDangNhap.Ma;
        private int _loaiUser = frmDangNhap.LoaiNhanVien;
        private int MaKhachHang = 0;
        private double tongtien = 0;

        public void XuLyDangNhap()
        {
            //switch (_loaiUser)
            //{
            //    case 1: Admin();
            //        break;
            //    case 2: BoPhanQuanLy();
            //        break;
            //    case 3: BoPhanBep();
            //        break;
            //    case 4: BoPhanThuNgan();
            //        break;
            //    case 5: BoPhanKho();
            //        break;
            //}
            this.lbNguoiDung.Text = "Người dùng: " + _tenUser;

            //}
        }

        private void frmMain_Load(object sender, EventArgs e)
        {
            //-- Fix cho Cell
            //DataGridViewImageCell dc = dataGridView[index Column, index Row] as DataGridViewImageCell;
            //dc.ImageLayout = DataGridViewImageCellLayout.Zoom;

            //-- Fix cho Column
            //DataGridViewImageColumn dc = dgvThietBi.Columns[7] as DataGridViewImageColumn;
            //dc.ImageLayout = DataGridViewImageCellLayout.Zoom;

            //dgvThietBi.Columns[8].DefaultCellStyle.Format = "#.##";
            //dgvThietBi.Columns[9].DefaultCellStyle.Format = "#.###";

            LoadDanhSachLoaiThietBi();            
            LoadNhanVien();
            LoadKhachHang();
            LoadDanhSachThietBiBanHang();
            DateTime dt = DateTime.Now;
            lbThoiGian.Text = String.Format("{0:d/M/yyyy HH:mm:ss}", dt);
            lbHomNay.Text = "Hôm nay: " + DateTime.Today.ToString("dd/MM/yyyy");
            lbNhanVien.Text = _tenUser;
            XuLyDangNhap();
            dgvNhapHang.Visible = false;
            dgvBanHang.Visible = true;
            
            //PhieuNhapHangBUS pnhbus = new PhieuNhapHangBUS();
            //HoaDonBUS hdbus = new HoaDonBUS();
            LoadPhieuBanHang();
            if (flag == 0)
            {
                lbSoLuongHoaDon.Text = dgvNhapHang.RowCount.ToString();
                lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvNhapHang, 5)).ToString();
            }
            else
            {
                lbSoLuongHoaDon.Text = dgvBanHang.RowCount.ToString();
                lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvBanHang, 5)).ToString();
            }
        }

        private double TinhTongMotCotTrenDGV(DataGridView dgv, int colindex)
        {
            double tong = 0;
            for (int i = 0; i < dgv.RowCount; i++)
            {
                tong = tong + double.Parse(dgv.Rows[i].Cells[colindex].Value.ToString());
            }
            return tong;
        }

        private void LoadNhanVien()
        {
            NhanVienBUS nvbus = new NhanVienBUS();
            List<NhanVienDTO> dsnv = nvbus.LayDanhSachNhanVien();
            LoaiNhanVienBUS lnvbus = new LoaiNhanVienBUS();
            LoaiNhanVienDTO lnvdto = new LoaiNhanVienDTO();
            LinkLabel llbChinhSua = new LinkLabel();
            LinkLabel llbXoa = new LinkLabel();
            llbChinhSua.Text = "Chỉnh sửa";
            llbXoa.Text = "Xóa";
            this.dgvNhanVien.Rows.Clear();
            for (int i = 0; i < dsnv.Count; i++)
            {
                lnvdto = lnvbus.LayThongTinLoaiNhanVienTheoMa(dsnv[i].LoaiNhanVien);
                dgvNhanVien.Rows.Add(dsnv[i].MaNhanVien, (i + 1).ToString(), dsnv[i].TenNhanVien, dsnv[i].NgaySinh, dsnv[i].DiaChi, dsnv[i].GioiTinh, dsnv[i].SoDienThoai, lnvdto.TenLoaiNhanVien, llbChinhSua.Text, llbXoa.Text);
            }
        }

        private void LoadKhachHang()
        {
            KhachHangBUS khBUS = new KhachHangBUS();
            List<KhachHangDTO> listKH = khBUS.LayDanhSachKhachHang();
            LinkLabel llbChinhSua = new LinkLabel();
            LinkLabel llbXoa = new LinkLabel();
            llbChinhSua.Text = "Chỉnh sửa";
            llbXoa.Text = "Xóa";
            this.dgvKhachHang.Rows.Clear();
            for (int i = 0; i < listKH.Count; i++)
            {
                dgvKhachHang.Rows.Add(listKH[i].MaKhachHang, (i + 1).ToString(), listKH[i].TenKhachHang, listKH[i].SoDienThoai, listKH[i].DiaChi, listKH[i].Email, listKH[i].GhiChu, llbChinhSua.Text, llbXoa.Text);
            }
        }

        private void LoadThietBiTheoLoai_HoaDon()
        {
            ThietBiBUS tbbus = new ThietBiBUS();
            List<ThietBiDTO> dstb = tbbus.LayDanhSachThietBi();

            dgvChonThietBi.Rows.Clear();
            for (int i = 0; i < dstb.Count; i++)
            {
                dgvChonThietBi.Rows.Add(dstb[i].MaThietBi, (i + 1).ToString(), dstb[i].HinhAnh, dstb[i].TenThietBi, dstb[i].GiaBan, dstb[i].SoLuongTon);
            }
        }

        //winform
        //private void LoadDanhSachLoaiThietBi()
        //{
        //    LoaiThietBiBUS ltbbus = new LoaiThietBiBUS();
        //    ThietBiBUS tbbus = new ThietBiBUS();
        //    List<LoaiThietBiDTO> nodecha = ltbbus.LayDanhSachLoaiThietBi();
        //    tw.Nodes.Clear();
        //    for (int i = 0; i < nodecha.Count; i++)
        //    {
        //        List<ThietBiDTO> nodecon = tbbus.LayDanhSachThietBiTheoMaLoaiThietBi(nodecha[i].MaLoaiThietBi);
        //        tw.Nodes.Add(nodecha[i].TenLoaiThietBi + " (" + tbbus.LaySoLuongThietBiTheoMaLoaiThietBi(ds[i].MaLoaiThietBi) + ")");
        //        tw.Nodes[i].Tag = nodecha[i].MaLoaiThietBi;

        //        //for (int j = 0; j < nodecon.Count; j++)
        //        //{
        //        //    tw.Nodes[i].Nodes.Add(nodecon[j].TenThietBi);
        //        //    tw.Nodes[i].Nodes[j].Tag = nodecon[j].MaThietBi;
        //        //}
        //    }
        //}

        //advtree dotnetbar
        private void LoadDanhSachLoaiThietBi()
        {
            LoaiThietBiBUS ltbbus = new LoaiThietBiBUS();
            List<LoaiThietBiDTO> ds = ltbbus.LayDanhSachLoaiThietBi();
            ThietBiBUS tbbus = new ThietBiBUS();

            tw.Nodes.Clear();
            DevComponents.AdvTree.Node node;
            node = new DevComponents.AdvTree.Node();
            node.Text = "Tất cả thiết bị (" + tbbus.LaySoLuongThietBi() + ")";
            node.Tag = -1;
            node.ImageIndex = 0;
            tw.Nodes.Add(node);
            for (int i = 0; i < ds.Count; i++)
            {
                node = new DevComponents.AdvTree.Node();

                node.Text = ds[i].TenLoaiThietBi + " (" + tbbus.LaySoLuongThietBiTheoMaLoaiThietBi(ds[i].MaLoaiThietBi) + ")";
                node.Tag = ds[i].MaLoaiThietBi;
                node.ImageIndex = 0;
                tw.Nodes.Add(node);
            }
            tw.SelectedIndex = 0;
            //tw.DataSource = nodecha;
            //tw.DisplayMembers = "TenLoaiThietBi"; //+ " (" + sl.ToString() + ")";
            //tw.ValueMember = "MaLoaiThietBi";            
        }

        private void LoadDanhSachThietBi()
        {
            ThietBiBUS tbbus = new ThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            List<ThietBiDTO> dstb = tbbus.LayDanhSachThietBi();
            LinkLabel lSua = new LinkLabel();
            LinkLabel lXoa = new LinkLabel();

            lSua.Text = "Chỉnh sửa";
            lXoa.Text = "Xóa";
            dgvThietBi.Rows.Clear();
            for (int i = 0; i < dstb.Count; i++)
            {
                //string tennhacungcap = nccbus.LayTenNhaCungCapTheoMa(dstb[i].MaNhaCungCap);
                Image img = Image.FromFile("Images/" + dstb[i].HinhAnh);
                dgvThietBi.Rows.Add(dstb[i].MaThietBi, dstb[i].ThongTinMoTa, i + 1, dstb[i].TenThietBi, dstb[i].XuatXu, dstb[i].IMEI, img, string.Format("{0:#,0.#}", dstb[i].GiaNhap), string.Format("{0:#,0.#}", dstb[i].GiaBan), dstb[i].SoLuongTon, lSua.Text, lXoa.Text); //co the: string.Format("{0:0,0 VNĐ}" ; {0:0,0}: hien la 00 neu gia tri la 0
            }
        }

        private void LoadDanhSachThietBiTheoMaLoaiThietBi(int ma)
        {
            ThietBiBUS tbbus = new ThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            List<ThietBiDTO> dstb = tbbus.LayDanhSachThietBiTheoMaLoaiThietBi(ma);
            LinkLabel lSua = new LinkLabel();
            LinkLabel lXoa = new LinkLabel();

            lSua.Text = "Chỉnh sửa";
            lXoa.Text = "Xóa";
            dgvThietBi.Rows.Clear();
            for (int i = 0; i < dstb.Count; i++)
            {
                //string tennhacungcap = nccbus.LayTenNhaCungCapTheoMa(dstb[i].MaNhaCungCap);
                Image img = Image.FromFile("Images/" + dstb[i].HinhAnh);
                dgvThietBi.Rows.Add(dstb[i].MaThietBi, dstb[i].ThongTinMoTa, i + 1, dstb[i].TenThietBi, dstb[i].XuatXu, dstb[i].IMEI, img, string.Format("{0:#,0.#}", dstb[i].GiaNhap), string.Format("{0:#,0.#}", dstb[i].GiaBan), dstb[i].SoLuongTon, lSua.Text, lXoa.Text);
            }
        }

        private void btnThemThietBi_Click(object sender, EventArgs e)
        {
            frmThemThietBi frm = new frmThemThietBi();
            frm.KhiThemMoi += frm_KhiThemThietBi;
            frm.ShowDialog();
        }

        void frm_KhiThemThietBi(ThietBiDTO dto)
        {
            dto.MaLoaiThietBi = (int)tw.SelectedNode.Tag;
            ThietBiBUS tbbus = new ThietBiBUS();
            LoaiThietBiBUS ltbbus = new LoaiThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            tbbus.ThemThietBi(dto);
            if (frmThemThietBi.PathFile != "" && !System.IO.File.Exists(Application.StartupPath + "/Images/" + frmThemThietBi.TenFile)) //neu nguoi dug co chon hih va hih chua co trog thu muc Images thi copy
                System.IO.File.Copy(frmThemThietBi.PathFile, Application.StartupPath + "/Images/" + frmThemThietBi.TenFile);

            //c1: them 1 dong moi(code nhieu may xu ly it) 
            LinkLabel lSua = new LinkLabel();
            LinkLabel lXoa = new LinkLabel();
            lSua.Text = "Chỉnh sửa";
            lXoa.Text = "Xóa";
            //string tennhacungcap = nccbus.LayTenNhaCungCapTheoMa(dto.MaNhaCungCap);
            Image img = Image.FromFile("Images/" + dto.HinhAnh);
            dgvThietBi.Rows.Add(tbbus.LayMaThietBiCaoNhat(), dto.ThongTinMoTa, dgvThietBi.RowCount + 1, dto.TenThietBi, dto.XuatXu, dto.IMEI, img, string.Format("{0:#,0.#}", dto.GiaNhap), string.Format("{0:#,0.#}", dto.GiaBan), dto.SoLuongTon, lSua.Text, lXoa.Text);

            //c2: cap nhat lai toan bo dgv theo MaLoaiThietBi(code it may xu ly nhieu hon)
            //LoadDanhSachThietBiTheoMaLoaiThietBi(dto.MaLoaiThietBi);

            //cap nhat so luong cho node loai thiet bi dag dc chon va node tat ca thiet bi
            tw.SelectedNode.Text = ltbbus.LayTenLoaiThietBiTheoMa(dto.MaLoaiThietBi) + " (" + tbbus.LaySoLuongThietBiTheoMaLoaiThietBi(dto.MaLoaiThietBi) + ")";
            tw.Nodes[0].Text = "Tất cả thiết bị (" + tbbus.LaySoLuongThietBi() + ")";

            //vi ct ko tu dong chon dong moi them nen cai dat lai->dong dc chon la dong moi them
            dgvThietBi.CurrentCell = dgvThietBi.Rows[dgvThietBi.RowCount - 1].Cells[9];
        }

        private void dgvThietBi_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            matb = (int)dgvThietBi.CurrentRow.Cells[0].Value;

            if (e.ColumnIndex == 6) //or dgvThietBi.CurrentCell.ColumnIndex == 6 ->lay index cot(.CurrentRow.Index(lay index dong, ko co .CurrentRow.Value), ko co .CurrentColumn)
            {
                info = dgvThietBi.CurrentRow.Cells[1].Value.ToString();
                img = (Image)dgvThietBi.CurrentRow.Cells[6].Value;
                frmHinhAnh frm = new frmHinhAnh();
                frm.ShowDialog();
            }
            else if (e.ColumnIndex == 10)
            {
                frmCapNhatThietBi frm = new frmCapNhatThietBi();
                frm.KhiCapNhat += frm_KhiCapNhatThietBi;
                frm.ShowDialog();
            }
            else if (e.ColumnIndex == 11)
            {
                try //dah cho tbbus.XoaThietBi(matb); khi thiet bi dag co trog hoa don nhap hay xuat
                {
                    DialogResult dr = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có chắc chắn muốn xóa thiết bị này?", "eMobile - Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (dr == DialogResult.Yes)
                    {
                        int rowIndex = dgvThietBi.CurrentRow.Index;
                        int colIndex = dgvThietBi.CurrentCell.ColumnIndex;
                        //int index = dgvThietBi.CurrentRow.Index;
                        ThietBiBUS tbbus = new ThietBiBUS();
                        LoaiThietBiBUS ltbbus = new LoaiThietBiBUS();
                        int maltb = tbbus.LayThongTinThietBi(matb).MaLoaiThietBi; //or luc dau khi load ds thiet bi len form, them 1 cot MaLoaiThietBi                  
                        tbbus.XoaThietBi(matb);
                        if ((int)tw.SelectedNode.Tag == -1)
                        {
                            //c1: xu ly it
                            dgvThietBi.Rows.Remove(dgvThietBi.Rows[rowIndex]);

                            //cap nhat lai STT
                            for (int i = rowIndex; i < dgvThietBi.RowCount; i++)
                                dgvThietBi.Rows[i].Cells[2].Value = (int)dgvThietBi.Rows[i].Cells[2].Value - 1;

                            //cap nhat sl thiet bi cho node
                            tw.SelectedNode.Text = "Tất cả thiết bị (" + tbbus.LaySoLuongThietBi() + ")";
                            for (int i = 1; i < tw.Nodes.Count; i++)
                            {
                                if ((int)tw.Nodes[i].Tag == maltb)
                                {
                                    tw.Nodes[i].Text = ltbbus.LayTenLoaiThietBiTheoMa(maltb) + " (" + tbbus.LaySoLuongThietBiTheoMaLoaiThietBi(maltb) + ")";
                                    break;
                                }
                            }

                            //c2: xu ly nhieu
                            //LoadDanhSachLoaiThietBi();
                        }
                        else
                        {
                            //c1:
                            dgvThietBi.Rows.Remove(dgvThietBi.Rows[rowIndex]);
                            //cap nhat lai STT
                            for (int i = rowIndex; i < dgvThietBi.RowCount; i++)
                                dgvThietBi.Rows[i].Cells[2].Value = (int)dgvThietBi.Rows[i].Cells[2].Value - 1;
                            //cap nhat sl thiet bi cho node
                            tw.SelectedNode.Text = ltbbus.LayTenLoaiThietBiTheoMa((int)tw.SelectedNode.Tag) + " (" + tbbus.LaySoLuongThietBiTheoMaLoaiThietBi((int)tw.SelectedNode.Tag) + ")";
                            tw.Nodes[0].Text = "Tất cả thiết bị (" + tbbus.LaySoLuongThietBi() + ")";

                            //c2:
                            //LoadDanhSachThietBiTheoMaLoaiThietBi((int)tw.SelectedNode.Tag);

                            //cach#
                            //int index = tw.SelectedNode.Index;
                            //LoadDanhSachLoaiThietBi();
                            //tw.SelectedIndex = index;
                        }

                        //vi da xu ly ko load lai dgv nen khi xoa chuog trih tu dong xu ly va chon dong thich hop
                        //if (dgvThietBi.RowCount > 0)
                        //{
                        //    if (rowIndex == dgvThietBi.RowCount) //neu dong dc chon xoa la dong cuoi thi dong rowindex-1 dc chon hien thi
                        //        dgvThietBi.CurrentCell = dgvThietBi.Rows[rowIndex - 1].Cells[colIndex];
                        //    else
                        //        dgvThietBi.CurrentCell = dgvThietBi.Rows[rowIndex].Cells[colIndex];
                        //}

                        //dgvThietBi.ClearSelection();
                        //dgvThietBi.Rows[index].Selected = true;                   
                        //dgvThietBi.SelectedRows[index].Selected = true;                                    
                        //dgvThietBi.CurrentCell = dgvThietBi.Rows[index].Cells[0];
                        //chon o visible(MaThietBi) se bao loi
                    }
                }
                catch
                {
                    DevComponents.DotNetBar.MessageBoxEx.Show("Không thể xóa vì thiết bị này đang có trong các chứng từ khác!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
            }
        }

        private void frm_KhiCapNhatThietBi(ThietBiDTO dto)
        {
            int index = dgvThietBi.CurrentRow.Index;
            ThietBiBUS tbbus = new ThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            tbbus.CapNhatThietBi(dto);
            if (frmCapNhatThietBi.PathFile != "" && !System.IO.File.Exists(Application.StartupPath + "/Images/" + frmCapNhatThietBi.TenFile)) //ko can dk 1 cug dc
                System.IO.File.Copy(frmCapNhatThietBi.PathFile, Application.StartupPath + "/Images/" + frmCapNhatThietBi.TenFile);

            //c1: code dai nhug may xu ly it
            dgvThietBi.Rows[index].Cells[0].Value = dto.MaThietBi;
            dgvThietBi.Rows[index].Cells[1].Value = dto.ThongTinMoTa;
            dgvThietBi.Rows[index].Cells[3].Value = dto.TenThietBi;
            dgvThietBi.Rows[index].Cells[4].Value = dto.XuatXu;
            //dgvThietBi.Rows[index].Cells[5].Value = nccbus.LayTenNhaCungCapTheoMa(dto.MaNhaCungCap);
            dgvThietBi.Rows[index].Cells[5].Value = dto.IMEI;
            dgvThietBi.Rows[index].Cells[6].Value = Image.FromFile("Images/" + dto.HinhAnh);
            dgvThietBi.Rows[index].Cells[7].Value = string.Format("{0:#,0.#}", dto.GiaNhap);
            dgvThietBi.Rows[index].Cells[8].Value = string.Format("{0:#,0.#}", dto.GiaBan);
            dgvThietBi.Rows[index].Cells[9].Value = dto.SoLuongTon;

            //c2: code it nhung xu ly nhieu hon
            //if ((int)tw.SelectedNode.Tag == -1)
            //    LoadDanhSachThietBi();
            //else
            //    LoadDanhSachThietBiTheoMaLoaiThietBi((int)tw.SelectedNode.Tag);
            //dgvThietBi.CurrentCell = dgvThietBi.Rows[index].Cells[11];    
        }

        private void tw_AfterNodeSelect(object sender, DevComponents.AdvTree.AdvTreeNodeEventArgs e) //neu xoa node dag dc chon thi dong nghia voi viec node do ko dc chon nua->xay ra su kien tw_AfterNodeDeselect, ma su kien tw_AfterNodeDeselect cham dut(tuc la chi co truog hop chon node khac)->xay ra su kien tw_AfterNodeSelect? nen phai co dk tw.SelectedNode != null vi SelectedNode=null thi ko dc truy xuat .ImageIndex hay .Tag ...
        {
            //txtTimKiem.Text = ""; //giang loi neu txtTimKiem.Text != null do txtTimKiem.Text dag "" thi dc gan =""->xay ra su kien TextChanged(dag "" ma gan="" thi ko xay ra su kien TextChanged), trog ham nay co (int)tw.SelectedNode.Tag ma tw.SelectedNode=null vi chua dc chon cho nen .tag se bao loi-> dat txtTimKiem.Text = ""; o cuoi ham
            //if (txtTimKiem.Text == "")
            //{
            if (tw.SelectedNode != null)
            {
                tw.SelectedNode.ImageIndex = 1;
                int ma = (int)tw.SelectedNode.Tag;
                if (ma != -1)
                {
                    LoadDanhSachThietBiTheoMaLoaiThietBi(ma);
                    btnCapNhatLoaiThietBi.Enabled = true;
                    btnXoaLoaiThietBi.Enabled = true;
                    btnThemThietBi.Enabled = true;
                }
                else
                {
                    LoadDanhSachThietBi();
                    btnCapNhatLoaiThietBi.Enabled = false;
                    btnXoaLoaiThietBi.Enabled = false;
                    btnThemThietBi.Enabled = false;
                }
            }
            //txtTimKiem.Text = "";
            //}
            //else
            //{
            //try
            //{
            if (tw.SelectedNode != null)
                txtTimKiem_TextChanged(sender, e);
            //}
            //catch { }
            //}
        }

        private void tw_AfterNodeDeselect(object sender, DevComponents.AdvTree.AdvTreeNodeEventArgs e) //xay ra khi chon node khac hay node dang chon bi xoa khoi tw, ko xay ra khi click chuot vao cho khac(button, label...)
        {
            e.Node.ImageIndex = 0;
        }

        private void btnThemLoaiThietBi_Click(object sender, EventArgs e)
        {
            frmThemLoaiThietBi frm = new frmThemLoaiThietBi();
            frm.KhiThemMoi += frm_KhiThemMoiLoaiThietBi;
            frm.ShowDialog();
        }

        void frm_KhiThemMoiLoaiThietBi(string ten)
        {
            LoaiThietBiBUS bus = new LoaiThietBiBUS();
            bus.ThemLoaiThietBi(ten);
            LoadDanhSachLoaiThietBi();
            tw.SelectedIndex = tw.Nodes.Count - 1;
        }

        private void btnCapNhatLoaiThietBi_Click(object sender, EventArgs e)
        {
            maltb = (int)tw.SelectedNode.Tag;
            frmCapNhatLoaiThietBi frm = new frmCapNhatLoaiThietBi();
            frm.KhiCapNhat += frm_KhiCapNhatLoaiThietBi;
            frm.ShowDialog();
        }

        void frm_KhiCapNhatLoaiThietBi(LoaiThietBiDTO dto)
        {
            int index = tw.SelectedIndex;
            LoaiThietBiBUS bus = new LoaiThietBiBUS();
            bus.CapNhatLoaiThietBi(dto);
            LoadDanhSachLoaiThietBi();
            tw.SelectedIndex = index;
        }

        private void btnXoaLoaiThietBi_Click(object sender, EventArgs e)
        {
            int index = tw.SelectedIndex;
            int ma = (int)tw.SelectedNode.Tag;
            ThietBiBUS tbbus = new ThietBiBUS();
            LoaiThietBiBUS ltbbus = new LoaiThietBiBUS();
            int sl = tbbus.LaySoLuongThietBiTheoMaLoaiThietBi(ma);
            if (sl == 0)
            {
                DialogResult dr = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có chắc chắn muốn xóa loại thiết bị này?", "eMobile - Xóa loại thiết bị", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dr == DialogResult.Yes)
                {
                    ltbbus.XoaLoaiThietBi(ma);
                    LoadDanhSachLoaiThietBi();
                    if (index == tw.Nodes.Count)
                        tw.SelectedIndex = index - 1;
                    else
                        tw.SelectedIndex = index;
                }
            }
            else
            {
                try
                {
                    DialogResult dr = DevComponents.DotNetBar.MessageBoxEx.Show("Cảnh báo: Nếu xóa loại thiết bị này thì các thiết bị thuộc về loại này cũng bị xóa theo. Bạn có chắc chắn muốn xóa?", "eMobile - Xóa loại thiết bị", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                    if (dr == DialogResult.Yes)
                    {
                        tbbus.XoaThietBiTheoMaLoaiThietBi(ma);
                        ltbbus.XoaLoaiThietBi(ma);
                        LoadDanhSachLoaiThietBi();
                        if (index == tw.Nodes.Count)
                            tw.SelectedIndex = index - 1;
                        else
                            tw.SelectedIndex = index;
                    }
                }
                catch
                {
                    DevComponents.DotNetBar.MessageBoxEx.Show("Không thể xóa loại thiết bị này vì một số thiết bị thuộc loại này đang có trong các chứng từ khác!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Stop);
                }
            }
        }

        private void txtTimKiem_TextChanged(object sender, EventArgs e) //gan txtTimKiem="" khi txtTimKiem dag="" thi ko xay ra su kien nay
        {
            ThietBiBUS tbbus = new ThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            List<ThietBiDTO> dstb;
            if (tw.SelectedIndex == 0)
                dstb = tbbus.TimKiemThietBiTatCaTieuChi(txtTimKiem.Text);
            else
                dstb = tbbus.TimKiemThietBiTheoLoaiThietBiTatCaTieuChi(txtTimKiem.Text, (int)tw.SelectedNode.Tag);
            LinkLabel lSua = new LinkLabel();
            LinkLabel lXoa = new LinkLabel();

            lSua.Text = "Chỉnh sửa";
            lXoa.Text = "Xóa";
            dgvThietBi.Rows.Clear();
            for (int i = 0; i < dstb.Count; i++)
            {
                //string tennhacungcap = nccbus.LayTenNhaCungCapTheoMa(dstb[i].MaNhaCungCap);
                Image img = Image.FromFile("Images/" + dstb[i].HinhAnh);
                dgvThietBi.Rows.Add(dstb[i].MaThietBi, dstb[i].ThongTinMoTa, i + 1, dstb[i].TenThietBi, dstb[i].XuatXu, dstb[i].IMEI, img, string.Format("{0:#,0.#}", dstb[i].GiaNhap), string.Format("{0:#,0.#}", dstb[i].GiaBan), dstb[i].SoLuongTon, lSua.Text, lXoa.Text);
            }
        }

        private void btnNhapMatHang_Click(object sender, EventArgs e)
        {
            frmNhapHang frm = new frmNhapHang();
            frm.KhiCapNhat += frm_KhiCapNhatDGV;
            frm.ShowDialog();
        }

        private void frm_KhiCapNhatDGV()
        {
            LoadDanhSachThietBi();
        }

        private void btnThemKhachHang_Click(object sender, EventArgs e)
        {
            frmThemKhachHang frm = new frmThemKhachHang();
            frm.KhiThemMoi += frm_KhiThemMoiKhachHang;
            frm.ShowDialog();
        }

        private void btnThemNhanVien_Click(object sender, EventArgs e)
        {
            frmThemNhanVien frm = new frmThemNhanVien();
            frm.KhiThemMoi += frm_KhiThemMoiNhanVien;
            frm.ShowDialog();
        }

        void frm_KhiThemMoiKhachHang(KhachHangDTO nvDTO)
        {
            KhachHangBUS khBUS = new KhachHangBUS();
            khBUS.ThemKhachHang(nvDTO);
            LoadKhachHang();
        }

        void frm_KhiChinhSuaKhachHang(KhachHangDTO nvDTO)
        {
            KhachHangBUS khBUS = new KhachHangBUS();
            khBUS.CapNhatKhachHang(nvDTO);
            LoadKhachHang();
        }

        void frm_KhiThemMoiNhanVien(NhanVienDTO nvDTO)
        {
            NhanVienBUS nvBUS = new NhanVienBUS();
            nvBUS.ThemNhanVien(nvDTO);
            LoadNhanVien();
        }
        void frm_KhiChinhSuaNhanVien(NhanVienDTO nvDTO)
        {
            NhanVienBUS nvBUS = new NhanVienBUS();
            nvBUS.CapNhatNhanVien(nvDTO);
            LoadNhanVien();
        }

        private void dgvKhachHang_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int dong = dgvKhachHang.SelectedCells[0].RowIndex;
            int _MaKhachHang = int.Parse(dgvKhachHang.Rows[dong].Cells[0].Value.ToString());

            if (e.ColumnIndex == 7)
            {
                frmSuaKhachHang fr = new frmSuaKhachHang();
                fr.MaKhachHang = _MaKhachHang;
                fr.KhiChinhSua += frm_KhiChinhSuaKhachHang;
                fr.ShowDialog();
            }
            if (e.ColumnIndex == 8)
            {
                DialogResult dir;
                dir = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn chắc chắn muốn xóa khách hàng này ra khỏi hệ thống?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dir == DialogResult.Yes)
                {
                    try
                    {
                        KhachHangBUS khBUS = new KhachHangBUS();
                        KhachHangDTO khDTO = new KhachHangDTO();
                        khDTO.MaKhachHang = _MaKhachHang;
                        string msg = khBUS.XoaKhachHang(khDTO);
                        LoadKhachHang();
                    }
                    catch (Exception)
                    {
                        DevComponents.DotNetBar.MessageBoxEx.Show("Khách hàng này đang được sử dụng trong các chứng từ khác.\nBạn không thể xóa khách hàng này.", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        private void dgvNhanVien_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            int dong = dgvNhanVien.SelectedCells[0].RowIndex;
            int _MaNhanVien = int.Parse(dgvNhanVien.Rows[dong].Cells[0].Value.ToString());
            if (e.ColumnIndex == 8)
            {
                //int dong = dgvNhanVien.SelectedCells.Count;
                frmSuaNhanVien fr = new frmSuaNhanVien();
                fr.MaNhanVien = _MaNhanVien;
                fr.KhiChinhSua += frm_KhiChinhSuaNhanVien;
                fr.ShowDialog();
            }
            if (e.ColumnIndex == 9)
            {
                DialogResult dir;
                dir = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn chắc chắn muốn xóa nhân viên này ra khỏi hệ thống?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dir == DialogResult.Yes)
                {
                    try
                    {

                        NhanVienBUS nvBUS = new NhanVienBUS();
                        nvBUS.XoaNhanVien(_MaNhanVien);
                        LoadNhanVien();
                    }
                    catch (Exception)
                    {
                        DevComponents.DotNetBar.MessageBoxEx.Show("Nhân viên này đang được sử dụng trong các chứng từ khác.\nBạn không thể xóa nhân viên này.", "Thông báo!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }

        private void btnKhachHang_Click(object sender, EventArgs e)
        {
            frmLuaChonKhachHang frm = new frmLuaChonKhachHang();
            frm.KhiLayKhachHang += frm_KhiLayKhachHang;
            frm.ShowDialog();
        }

        void frm_KhiLayKhachHang(KhachHangDTO kh)
        {
            MaKhachHang = Convert.ToInt32(kh.MaKhachHang);
            lbKhachHang.Text = Convert.ToString(kh.TenKhachHang);
        }

        private void dgvChonThietBi_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int MaThietBi = int.Parse(dgvChonThietBi.CurrentRow.Cells[0].Value.ToString());
            string TenThietBi = dgvChonThietBi.CurrentRow.Cells[3].Value.ToString();
            double DonGia = double.Parse(dgvChonThietBi.CurrentRow.Cells[4].Value.ToString());
            int SoLuong = 1;
            int stt = 1;
            stt = dgvDanhSachThietBi.Rows.Count + 1;
            if (dgvDanhSachThietBi.Rows.Count > 0)
            {
                for (int i = 0; i < dgvDanhSachThietBi.Rows.Count; i++)
                {
                    if (MaThietBi == int.Parse(dgvDanhSachThietBi.Rows[i].Cells[0].Value.ToString()))
                    {
                        //Cộng dồn số lượng
                        dgvDanhSachThietBi.Rows[i].Cells[3].Value = int.Parse(dgvDanhSachThietBi.Rows[i].Cells[3].Value.ToString()) + 1;
                        //Cộng dồn thành tiền
                        dgvDanhSachThietBi.Rows[i].Cells[5].Value = double.Parse(dgvDanhSachThietBi.Rows[i].Cells[5].Value.ToString()) * 2;
                        return;
                    }
                }
                dgvDanhSachThietBi.Rows.Add(MaThietBi, stt, TenThietBi, SoLuong, DonGia);
            }
            else dgvDanhSachThietBi.Rows.Add(MaThietBi, stt, TenThietBi, SoLuong, DonGia);
            if (dgvDanhSachThietBi.Rows.Count > 0)
            {
                btnThanhToan.Enabled = true;
                this.btnInHoaDon.Enabled = true;
            }
        }

        private void dgvDanhSachThietBi_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void dgvDanhSachThietBi_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                if (dgvDanhSachThietBi.Rows[e.RowIndex].Cells[1].Value.ToString() != "" && dgvDanhSachThietBi.Rows[e.RowIndex].Cells[4].Value.ToString() != "")
                {
                    int soluong = Convert.ToInt32(dgvDanhSachThietBi.Rows[e.RowIndex].Cells[3].Value.ToString());
                    double dongia = Convert.ToDouble(dgvDanhSachThietBi.Rows[e.RowIndex].Cells[4].Value.ToString());
                    double thanhtien = soluong * dongia;
                    dgvDanhSachThietBi.Rows[e.RowIndex].Cells[5].Value = thanhtien.ToString();
                }
            }

            catch (Exception)
            {
            }
            for (int i = 0; i < dgvDanhSachThietBi.Rows.Count; i++)
            {
                try
                {
                    //double thanhtien = Convert.ToDouble(dgvDanhSachThietBi.Rows[i].Cells[5].Value);
                    tongtien += Convert.ToDouble(dgvDanhSachThietBi.Rows[i].Cells[5].Value);
                }
                catch (Exception)
                {
                }
            }
            if (dgvDanhSachThietBi.Rows.Count > 0)
            {
                btnThanhToan.Enabled = true;
                this.btnInHoaDon.Enabled = true;
            }
            lbTongTien.Text = string.Format("{0:#,0.#} VNĐ", tongtien).ToString();
        }

        private void dgvDanhSachThietBi_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
        {
            try
            {
                if (dgvDanhSachThietBi.Rows[e.RowIndex].Cells[1].Value.ToString() != "" && dgvDanhSachThietBi.Rows[e.RowIndex].Cells[4].Value.ToString() != "")
                {
                    int soluong = Convert.ToInt32(dgvDanhSachThietBi.Rows[e.RowIndex].Cells[3].Value.ToString());
                    double dongia = Convert.ToDouble(dgvDanhSachThietBi.Rows[e.RowIndex].Cells[4].Value.ToString());
                    double thanhtien = soluong * dongia;
                    dgvDanhSachThietBi.Rows[e.RowIndex].Cells[5].Value = thanhtien.ToString();
                }
            }

            catch (Exception)
            {
            }
            for (int i = 0; i < dgvDanhSachThietBi.Rows.Count; i++)
            {
                try
                {
                    //double thanhtien = Convert.ToDouble(dgvDanhSachThietBi.Rows[i].Cells[5].Value);
                    tongtien += Convert.ToDouble(dgvDanhSachThietBi.Rows[i].Cells[5].Value);
                }
                catch (Exception)
                {
                }
            }
            lbTongTien.Text = string.Format("{0:#,0.#} VNĐ", tongtien).ToString();
            if (dgvDanhSachThietBi.Rows.Count > 0)
            {
                btnThanhToan.Enabled = true;
                this.btnInHoaDon.Enabled = true;
            }
        }

        private void contextMenuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {
            DialogResult dir;
            dir = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có chắc chắn xóa mặt hàng này ra khỏi hóa đơn?", "Thông báo!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            if (dir == DialogResult.OK)
            {
                Int32 rowToDelete = dgvDanhSachThietBi.Rows.GetFirstRow(DataGridViewElementStates.Selected);
                dgvDanhSachThietBi.Rows.RemoveAt(rowToDelete);
                dgvDanhSachThietBi.ClearSelection();
                if(dgvDanhSachThietBi.Rows.Count < 1)
                {
                    btnThanhToan.Enabled = false;
                    this.btnInHoaDon.Enabled = false;
                }
                if (dgvDanhSachThietBi.Rows.Count >= 1)
                {
                    for (int i = dgvDanhSachThietBi.CurrentCell.RowIndex; i < dgvDanhSachThietBi.RowCount; i++)
                    {
                        dgvDanhSachThietBi.Rows[i].Cells[1].Value = (int)dgvDanhSachThietBi.Rows[i].Cells[1].Value - 1;
                    }
                }
            }
        }

        private void dgvDanhSachThietBi_MouseDown(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Right)
            {
                var hti = dgvDanhSachThietBi.HitTest(e.X, e.Y);
                dgvDanhSachThietBi.ClearSelection();
                dgvDanhSachThietBi.Rows[hti.RowIndex].Selected = true;
            }
        }

        private void btnThanhToan_Click(object sender, EventArgs e)
        {
            if (MaKhachHang == 0)
            {
                DevComponents.DotNetBar.MessageBoxEx.Show("Chưa chọn khách hàng!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                return;
            }
            try
            {
                int kq = -1;
                string themct = "";
                HoaDonBUS hdBUS = new HoaDonBUS();
                HoaDonDTO hdDTO = new HoaDonDTO();
                hdDTO.MaKhachHang = MaKhachHang;
                hdDTO.NgayLap = DateTime.Parse(lbThoiGian.Text);
                hdDTO.NhanVienLap = _maUser;
                hdDTO.TongTien = (float)(tongtien);
                hdDTO.GhiChu = txtGhiChu.Text;

                kq = hdBUS.ThemHoaDon(hdDTO);

                //them chi tiet hoa don (tham so kq)
                ChiTietHoaDonBUS cthdkBUS = new ChiTietHoaDonBUS();
                for (int i = 0; i < this.dgvDanhSachThietBi.Rows.Count; i++)
                {
                    try
                    {
                        ChiTietHoaDonDTO cthdDTO = new ChiTietHoaDonDTO();
                        cthdDTO.MaHoaDon = kq;
                        cthdDTO.MaThietBi = int.Parse(this.dgvDanhSachThietBi.Rows[i].Cells[0].Value.ToString());
                        cthdDTO.SoLuong = int.Parse((this.dgvDanhSachThietBi.Rows[i].Cells[3].Value.ToString()));
                        cthdDTO.DonGia = float.Parse(dgvDanhSachThietBi.Rows[i].Cells[4].Value.ToString());
                        cthdDTO.ThanhTien = float.Parse(dgvDanhSachThietBi.Rows[i].Cells[5].Value.ToString());

                        if (cthdDTO.MaHoaDon != -1)
                        {
                            themct = cthdkBUS.ThemChiTietHoaDon(cthdDTO);
                        }
                    }
                    catch (Exception ex)
                    {
                        DevComponents.DotNetBar.MessageBoxEx.Show("Thêm ct hóa đơn không thành công!" + ex.Message);
                    }
                }
                if (kq != -1 && themct == "")
                {
                    DevComponents.DotNetBar.MessageBoxEx.Show("Thanh toán hóa đơn thành công!", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    //Cập nhật số lượng tồn
                    ThietBiBUS tbbus = new ThietBiBUS();
                    for (int i = 0; i < dgvDanhSachThietBi.Rows.Count; i++)
                    {
                        int MaTB = (int)dgvDanhSachThietBi.Rows[i].Cells[0].Value;
                        int slban = (int)dgvDanhSachThietBi.Rows[i].Cells[3].Value;
                        int sl = tbbus.LaySoLuongTon(MaTB) - slban;
                        tbbus.CapNhatSoLuongTon(MaTB, sl);
                    }
                    LoadDanhSachThietBiBanHang();
                    dgvDanhSachThietBi.Rows.Clear();
                    txtGhiChu.Text = "";
                    lbTongTien.Text = "0 VND";
                    btnThanhToan.Enabled = false;
                    this.btnInHoaDon.Enabled = false;
                }
            }
            catch (Exception ex)
            {
                DevComponents.DotNetBar.MessageBoxEx.Show("Thêm hóa đơn không thành công!" + ex.Message);
            }
        }

        private void btnHuyHoaDon_Click(object sender, EventArgs e)
        {
            DialogResult dir;
            dir = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có muốn hủy hóa đơn này không?", "Thông báo!", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning);
            if (dir == DialogResult.OK)
            {
                dgvDanhSachThietBi.Rows.Clear();
                txtGhiChu.Text = "";
                lbTongTien.Text = "0 VND";
                btnThanhToan.Enabled = false;
                this.btnInHoaDon.Enabled = false;
            }
        }

        private void LoadDanhSachThietBiBanHang()
        {
            ThietBiBUS tbbus = new ThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            List<ThietBiDTO> dstb = tbbus.LayDanhSachThietBi();

            dgvChonThietBi.Rows.Clear();
            for (int i = 0; i < dstb.Count; i++)
            {
                //string tennhacungcap = nccbus.LayTenNhaCungCapTheoMa(dstb[i].MaNhaCungCap);
                Image img = Image.FromFile("Images/" + dstb[i].HinhAnh);
                dgvChonThietBi.Rows.Add(dstb[i].MaThietBi, i + 1, img, dstb[i].TenThietBi, string.Format("{0:#,0.#}", dstb[i].GiaBan), dstb[i].SoLuongTon); //co the: string.Format("{0:0,0 VNĐ}" ; {0:0,0}: hien la 00 neu gia tri la 0
            }
        }

        private void txtTimKiemMatHang_TextChanged(object sender, EventArgs e)
        {
            ThietBiBUS tbbus = new ThietBiBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            List<ThietBiDTO> dstb;
            dstb = tbbus.TimKiemThietBiTatCaTieuChi(txtTimKiemMatHang.Text);
            dgvChonThietBi.Rows.Clear();
            for (int i = 0; i < dstb.Count; i++)
            {
                //string tennhacungcap = nccbus.LayTenNhaCungCapTheoMa(dstb[i].MaNhaCungCap);
                Image img = Image.FromFile("Images/" + dstb[i].HinhAnh);
                dgvChonThietBi.Rows.Add(dstb[i].MaThietBi, i + 1, img, dstb[i].TenThietBi, string.Format("{0:#,0.#}", dstb[i].GiaBan), dstb[i].SoLuongTon);
            }
        }

        private void btnDangXuat_Click(object sender, EventArgs e)
        {
            Close();
            frmDangNhap frm = new frmDangNhap();
            frm.Show();
        }

        private void btnInHoaDon_Click(object sender, EventArgs e)
        {
            ReportDocument cryRpt = new ReportDocument();
            cryRpt.Load("rptHoaDon.rpt");
            frmInHoaDon frm = new frmInHoaDon();
            frm.crystalReportViewer1.ReportSource = cryRpt;
            frm.crystalReportViewer1.Refresh();
        }

        private void btnBanHang_Click(object sender, EventArgs e)
        {
            flag = 1;
            dgvNhapHang.Visible = false;
            dgvBanHang.Visible = true;
            LoadPhieuBanHang();
            lbSoLuongHoaDon.Text = dgvBanHang.RowCount.ToString();
            lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvBanHang, 5)).ToString();
        }

        private void btnNhapHang_Click(object sender, EventArgs e)
        {
            flag = 0;
            dgvNhapHang.Visible = true;
            dgvBanHang.Visible = false;
            LoadPhieuNhapHang();
            lbSoLuongHoaDon.Text = dgvNhapHang.RowCount.ToString();
            lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvNhapHang, 5)).ToString();
        }

        private void LoadPhieuNhapHang()
        {
            PhieuNhapHangBUS pnhbus = new PhieuNhapHangBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            NhanVienBUS nvbus = new NhanVienBUS();
            List<PhieuNhapHangDTO> ds = pnhbus.LayDanhSachPhieuNhapHang();
            LinkLabel lbChiTiet = new LinkLabel();
            //LinkLabel lbSua = new LinkLabel();
            LinkLabel lbXoa = new LinkLabel();
            lbChiTiet.Text = "Chi tiết";
            //lbSua.Text = "Chỉnh sửa";
            lbXoa.Text = "Xóa";
            dgvNhapHang.Rows.Clear();
            for (int i = 0; i < ds.Count; i++)
            {
                dgvNhapHang.Rows.Add(i + 1, ds[i].MaPhieuNhap, nccbus.LayTenNhaCungCapTheoMa(ds[i].MaNhaCungCap), ds[i].NgayNhap, nvbus.LayTenNhanVienTheoMa(ds[i].NhanVienNhap), string.Format("{0:#,0.#}", ds[i].TongTien), ds[i].GhiChu, lbChiTiet.Text, lbXoa.Text);
            }
        }

        public static int maphieunhap;
        private void dgvNhapHang_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 7)
            {
                maphieunhap = (int)dgvNhapHang.CurrentRow.Cells[1].Value;
                frmChiTietPhieuNhapHang frm = new frmChiTietPhieuNhapHang();
                frm.ShowDialog();
            }
            else if (e.ColumnIndex == 8)
            {
                DialogResult dr = DevComponents.DotNetBar.MessageBoxEx.Show("Khi xóa phiếu nhập hàng này thì hệ thống sẽ tự động trừ vào số lượng tồn kho của mặt hàng theo phiếu nhập hàng bạn xóa.\n Bạn có chắc chắn muốn xóa?", "eMobile - Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dr == DialogResult.Yes)
                {
                    int rowindex = dgvNhapHang.CurrentRow.Index;
                    maphieunhap = (int)dgvNhapHang.CurrentRow.Cells[1].Value;
                    PhieuNhapHangBUS pnhbus = new PhieuNhapHangBUS();
                    ChiTietPhieuNhapHangBUS ctpnhbus = new ChiTietPhieuNhapHangBUS();
                    CapNhatSoLuongTon(maphieunhap);
                    ctpnhbus.XoaChiTietPhieuNhapTheoMaPhieuNhap(maphieunhap);
                    pnhbus.XoaPhieuNhapHang(maphieunhap);                   
                    dgvNhapHang.Rows.Remove(dgvNhapHang.CurrentRow);
                    for (int i = rowindex; i < dgvNhapHang.RowCount; i++)
                    {
                        dgvNhapHang.Rows[i].Cells[0].Value = (int)dgvNhapHang.Rows[i].Cells[0].Value - 1;
                    }
                    lbSoLuongHoaDon.Text = dgvBanHang.RowCount.ToString();
                    lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvNhapHang, 5)).ToString();
                }
            }
        }

        private void CapNhatSoLuongTon(int maphieunhap)
        {
            ChiTietPhieuNhapHangBUS ctpnhbus = new ChiTietPhieuNhapHangBUS();
            ThietBiBUS tbbus = new ThietBiBUS();
            List<ChiTietPhieuNhapHangDTO> ds = ctpnhbus.LayDanhSachChiTietPhieuNhapTheoMaPhieuNhap(maphieunhap);
            for (int i = 0; i < ds.Count; i++)
            {
                int sl = tbbus.LaySoLuongTon(ds[i].MaThietBi) - ds[i].SoLuong;
                tbbus.CapNhatSoLuongTon(ds[i].MaThietBi, sl);
            }
        }

        int flag = 1;
        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            if (flag == 0)
            {
                LoadKetQuaTimKiemPhieuNhapHang();
            }
            else
            {
                LoadKetQuaTimKiemPhieuBanHang();
            }
        }

        private void LoadKetQuaTimKiemPhieuBanHang()
        {
            HoaDonBUS hdbus = new HoaDonBUS();
            //NhaCungCapBUS nccbus = new NhaCungCapBUS();
            KhachHangBUS khbus = new KhachHangBUS();
            NhanVienBUS nvbus = new NhanVienBUS();
            List<HoaDonDTO> ds = hdbus.LayDanhSachHoaDonTheoNgay(dtpTuNgay.Text, dtpDenNgay.Text);
            //List<PhieuNhapHangDTO> ds = pnhbus.LayDanhSachPhieuNhapHangTheoNgay(dtpTuNgay.Value, dtpDenNgay.Value);
            LinkLabel lbChiTiet = new LinkLabel();
            //LinkLabel lbSua = new LinkLabel();
            LinkLabel lbXoa = new LinkLabel();
            lbChiTiet.Text = "Chi tiết";
            //lbSua.Text = "Chỉnh sửa";
            lbXoa.Text = "Xóa";
            dgvNhapHang.Rows.Clear();
            for (int i = 0; i < ds.Count; i++)
            {
                dgvBanHang.Rows.Add(i + 1, ds[i].MaHoaDon, khbus.LayThongTinKhachHangTheoMa(ds[i].MaKhachHang).TenKhachHang, ds[i].NgayLap, nvbus.LayTenNhanVienTheoMa(ds[i].NhanVienLap), string.Format("{0:#,0.#}", ds[i].TongTien), ds[i].GhiChu, lbChiTiet.Text, lbXoa.Text);
            }
            lbSoLuongHoaDon.Text = dgvBanHang.RowCount.ToString();
            lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvBanHang, 5)).ToString();
        }

        private void LoadKetQuaTimKiemPhieuNhapHang()
        {
            //MessageBox.Show(dtpTuNgay.Value.ToString()); //show ngay/thang/nam gio:phut:giay
            //MessageBox.Show(dtpTuNgay.Text); //chi show ngay/thang/nam
            PhieuNhapHangBUS pnhbus = new PhieuNhapHangBUS();
            NhaCungCapBUS nccbus = new NhaCungCapBUS();
            NhanVienBUS nvbus = new NhanVienBUS();
            List<PhieuNhapHangDTO> ds = pnhbus.LayDanhSachPhieuNhapHangTheoNgay(dtpTuNgay.Text, dtpDenNgay.Text);
            //List<PhieuNhapHangDTO> ds = pnhbus.LayDanhSachPhieuNhapHangTheoNgay(dtpTuNgay.Value, dtpDenNgay.Value);
            LinkLabel lbChiTiet = new LinkLabel();
            //LinkLabel lbSua = new LinkLabel();
            LinkLabel lbXoa = new LinkLabel();
            lbChiTiet.Text = "Chi tiết";
            //lbSua.Text = "Chỉnh sửa";
            lbXoa.Text = "Xóa";
            dgvNhapHang.Rows.Clear();
            for (int i = 0; i < ds.Count; i++)
            {
                dgvNhapHang.Rows.Add(i + 1, ds[i].MaPhieuNhap, nccbus.LayTenNhaCungCapTheoMa(ds[i].MaNhaCungCap), ds[i].NgayNhap, nvbus.LayTenNhanVienTheoMa(ds[i].NhanVienNhap), string.Format("{0:#,0.#}", ds[i].TongTien), ds[i].GhiChu, lbChiTiet.Text, lbXoa.Text);
            }
            lbSoLuongHoaDon.Text = dgvNhapHang.RowCount.ToString();
            lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvNhapHang, 5)).ToString();
        }

        private void LoadPhieuBanHang()
        {
            HoaDonBUS hdbus = new HoaDonBUS();
            //NhaCungCapBUS nccbus = new NhaCungCapBUS();
            KhachHangBUS khbus = new KhachHangBUS();
            NhanVienBUS nvbus = new NhanVienBUS();
            List<HoaDonDTO> ds = hdbus.LayDanhSachHoaDon();
            LinkLabel lbChiTiet = new LinkLabel();
            //LinkLabel lbSua = new LinkLabel();
            LinkLabel lbXoa = new LinkLabel();
            lbChiTiet.Text = "Chi tiết";
            //lbSua.Text = "Chỉnh sửa";
            lbXoa.Text = "Xóa";
            dgvBanHang.Rows.Clear();
            for (int i = 0; i < ds.Count; i++)
            {
                dgvBanHang.Rows.Add(i + 1, ds[i].MaHoaDon, khbus.LayThongTinKhachHangTheoMa(ds[i].MaKhachHang).TenKhachHang, ds[i].NgayLap, nvbus.LayTenNhanVienTheoMa(ds[i].NhanVienLap), string.Format("{0:#,0.#}", ds[i].TongTien), ds[i].GhiChu, lbChiTiet.Text, lbXoa.Text);
            }
        }

        public static int mahoadon;
        private void dgvBanHang_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 7)
            {
                mahoadon = (int)dgvBanHang.CurrentRow.Cells[1].Value;
                frmChiTietPhieuBanHang frm = new frmChiTietPhieuBanHang();
                frm.ShowDialog();
            }
            else if (e.ColumnIndex == 8)
            {
                DialogResult dr = DevComponents.DotNetBar.MessageBoxEx.Show("Bạn có chắc chắn muốn xóa hóa đơn này?", "eMobile - Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
                if (dr == DialogResult.Yes)
                {
                    int rowindex = dgvBanHang.CurrentRow.Index;
                    mahoadon = (int)dgvBanHang.CurrentRow.Cells[1].Value;
                    HoaDonBUS hdbus = new HoaDonBUS();
                    ChiTietHoaDonBUS cthdbus = new ChiTietHoaDonBUS();
                    //CapNhatSoLuongTon(mahoadon);

                    cthdbus.XoaChiTietHoaDonTheoMaHoaDon(mahoadon);
                    string str2 = hdbus.XoaHoaDon(mahoadon);
                    dgvBanHang.Rows.Remove(dgvBanHang.CurrentRow);
                    for (int i = rowindex; i < dgvBanHang.RowCount; i++)
                    {
                        dgvBanHang.Rows[i].Cells[0].Value = (int)dgvBanHang.Rows[i].Cells[0].Value - 1;
                    }
                    lbSoLuongHoaDon.Text = dgvBanHang.RowCount.ToString();
                    lbTongTriGia.Text = string.Format("{0:#,0.#} VNĐ", TinhTongMotCotTrenDGV(dgvBanHang, 5)).ToString();
                }
            }
        }

        private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
    }
}